home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / workbench / directoryopus4 / dopus4_src / library / graphics.a < prev    next >
Text File  |  2000-03-11  |  7KB  |  436 lines

  1. ; Directory Opus 4
  2. ; Original GPL release version 4.12
  3. ; Copyright 1993-2000 Jonathan Potter
  4. ; This program is free software; you can redistribute it and/or
  5. ; modify it under the terms of the GNU General Public License
  6. ; as published by the Free Software Foundation; either version 2
  7. ; of the License, or (at your option) any later version.
  8. ; This program is distributed in the hope that it will be useful,
  9. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. ; GNU General Public License for more details.
  12. ; You should have received a copy of the GNU General Public License
  13. ; along with this program; if not, write to the Free Software
  14. ; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  15. ; All users of Directory Opus 4 (including versions distributed
  16. ; under the GPL) are entitled to upgrade to the latest version of
  17. ; Directory Opus version 5 at a reduced price. Please see
  18. ; http://www.gpsoft.com.au for more information.
  19. ; The release of Directory Opus 4 under the GPL in NO WAY affects
  20. ; the existing commercial status of Directory Opus 5.
  21.  
  22.  
  23.     SECTION    code
  24.  
  25.     INCLUDE "asmsupp.i"
  26.     INCLUDE "dopusbase.i"
  27.  
  28.     XDEF Do3DBox
  29.     XDEF Do3DStringBox
  30.     XDEF Do3DCycleBox
  31.     XDEF DrawCheckMark
  32.     XDEF HiliteGad
  33.     
  34. Do3DBox:
  35.     movem.l a2-a4/a6/d2-d7,-(sp)
  36.  
  37.     move.l db_GfxBase(a6),a6
  38.     move.l a0,a2
  39.     move.l d0,d6
  40.     move.l d1,d7
  41.  
  42.     move.l a2,a1
  43.     move.l d4,d0
  44.     jsr _LVOSetAPen(a6)
  45.  
  46.     move.l a2,a1
  47.     move.l d6,d0
  48.     subq.l #2,d0
  49.     move.l d0,a3
  50.     move.l d7,d1
  51.     subq.l #1,d1
  52.     move.l d1,a4
  53.     jsr _LVOMove(a6)
  54.  
  55.     move.l a2,a1
  56.     move.l d6,d0
  57.     add.l d2,d0
  58.     move.l a4,d1
  59.     jsr _LVODraw(a6)
  60.  
  61.     move.l a2,a1
  62.     move.l a3,d0
  63.     move.l a4,d1
  64.     jsr _LVOMove(a6)
  65.  
  66.     move.l a2,a1
  67.     move.l a3,d0
  68.     move.l d7,d1
  69.     add.l d3,d1
  70.     jsr _LVODraw(a6)
  71.  
  72.     move.l a2,a1
  73.     move.l d6,d0
  74.     subq.l #1,d0
  75.     move.l d0,a3
  76.     move.l a4,d1
  77.     jsr _LVOMove(a6)
  78.  
  79.     move.l a2,a1
  80.     move.l a3,d0
  81.     move.l d7,d1
  82.     add.l d3,d1
  83.     move.l d1,a4
  84.     subq.l #1,d1
  85.     jsr _LVODraw(a6)
  86.  
  87.     move.l a2,a1
  88.     move.l d5,d0
  89.     jsr _LVOSetAPen(a6)
  90.  
  91.     move.l a2,a1
  92.     move.l a3,d0
  93.     move.l a4,d1
  94.     jsr _LVOMove(a6)
  95.  
  96.     move.l a2,a1    
  97.     move.l d6,d0
  98.     add.l d2,d0
  99.     move.l d0,a3
  100.     addq.l #1,d0
  101.     move.l a4,d1
  102.     jsr _LVODraw(a6)
  103.  
  104.     move.l a2,a1
  105.     move.l a3,d0
  106.     addq.l #1,d0
  107.     move.l d7,d1
  108.     subq.l #1,d1
  109.     jsr _LVODraw(a6)
  110.  
  111.     move.l a2,a1
  112.     move.l a3,d0
  113.     move.l a4,d1
  114.     jsr _LVOMove(a6)
  115.  
  116.     move.l a2,a1
  117.     move.l a3,d0
  118.     move.l d7,d1
  119.     jsr _LVODraw(a6)
  120.  
  121.     movem.l (sp)+,a2-a4/a6/d2-d7
  122.     rts
  123.  
  124. Do3DStringBox:
  125.     movem.l a0/d0-d3,-(sp)
  126.     subq.l #2,d0
  127.     subq.l #1,d1
  128.     addq.l #4,d2
  129.     addq.l #2,d3
  130.     bsr Do3DBox
  131.     movem.l (sp)+,a0/d0-d3
  132.  
  133.     movem.l a2-a4/a6/d2-d7,-(sp)
  134.  
  135.     move.l db_GfxBase(a6),a6
  136.     move.l a0,a2
  137.     move.l d0,d6
  138.     move.l d1,d7
  139.  
  140.     move.l a2,a1
  141.     move.l d5,d0
  142.     jsr _LVOSetAPen(a6)
  143.  
  144.     move.l a2,a1
  145.     move.l d6,d0
  146.     subq.l #2,d0
  147.     move.l d0,a3
  148.     move.l d7,d1
  149.     subq.l #1,d1
  150.     move.l d1,a4
  151.     jsr _LVOMove(a6)
  152.  
  153.     move.l a2,a1
  154.     move.l d6,d0
  155.     add.l d2,d0
  156.     addq.l #1,d0
  157.     move.l a4,d1
  158.     jsr _LVODraw(a6)
  159.  
  160.     move.l a2,a1
  161.     move.l a3,d0
  162.     move.l a4,d1
  163.     jsr _LVOMove(a6)
  164.  
  165.     move.l a2,a1
  166.     move.l a3,d0
  167.     move.l d7,d1
  168.     add.l d3,d1
  169.     addq.l #1,d1
  170.     jsr _LVODraw(a6)
  171.  
  172.     move.l a2,a1
  173.     move.l d6,d0
  174.     subq.l #1,d0
  175.     move.l d0,a3
  176.     move.l a4,d1
  177.     jsr _LVOMove(a6)
  178.  
  179.     move.l a2,a1
  180.     move.l a3,d0
  181.     move.l d7,d1
  182.     add.l d3,d1
  183.     move.l d1,a4
  184.     subq.l #1,d1
  185.     jsr _LVODraw(a6)
  186.  
  187.     move.l a2,a1
  188.     move.l d4,d0
  189.     jsr _LVOSetAPen(a6)
  190.  
  191.     move.l a2,a1
  192.     move.l a3,d0
  193.     move.l a4,d1
  194.     jsr _LVOMove(a6)
  195.  
  196.     move.l a2,a1
  197.     move.l d6,d0
  198.     add.l d2,d0
  199.     addq.l #1,d0
  200.     move.l d0,a3
  201.     move.l a4,d1
  202.     jsr _LVODraw(a6)
  203.  
  204.     move.l a2,a1
  205.     move.l a3,d0
  206.     move.l d7,d1
  207.     subq.l #1,d1
  208.     jsr _LVODraw(a6)
  209.  
  210.     move.l a2,a1
  211.     sub.l #1,a3
  212.     move.l a3,d0
  213.     move.l a4,d1
  214.     jsr _LVOMove(a6)
  215.  
  216.     move.l a2,a1
  217.     move.l a3,d0
  218.     move.l d7,d1
  219.     jsr _LVODraw(a6)
  220.  
  221.     movem.l (sp)+,a2-a4/a6/d2-d7
  222.     rts
  223.  
  224. Do3DCycleBox:
  225.     movem.l a0/d0/d1,-(sp)
  226.     bsr Do3DBox
  227.     movem.l (sp)+,a0/d0/d1
  228.  
  229.     movem.l a2-a6/d2-d7,-(sp)
  230.  
  231.     move.l a6,a5
  232.     move.l db_GfxBase(a6),a6
  233.     move.l a0,a2
  234.     move.l d0,d6
  235.     move.l d1,d7
  236.  
  237.     move.l a2,a1
  238.     move.l d5,d0
  239.     jsr _LVOSetAPen(a6)
  240.  
  241.     move.l a2,a1
  242.     moveq.l #0,d0
  243.     move.b 28(a1),d0
  244.     move.l d0,-(sp)
  245.     moveq.l #0,d0
  246.     jsr _LVOSetDrMd(a6)
  247.  
  248.     movem.l d0-d5,-(sp)
  249.     move.l pdb_cycletop(a5),d0
  250.     tst.l d0
  251.     beq.s nocycletopdraw
  252.     move.l d0,a0
  253.     move.l d6,d2
  254.     addq.l #4,d2
  255.     move.l d3,a3
  256.     move.l d7,d3
  257.     addq.l #1,d3
  258.     sub.l #12,a3
  259.     add.l d3,a3
  260.     add.l #7,a3
  261.     moveq.l #0,d0
  262.     moveq.l #2,d1
  263.     move.l a2,a1
  264.     moveq.l #11,d4
  265.     moveq.l #6,d5
  266.     jsr _LVOBltTemplate(a6)
  267.  
  268. nocycletopdraw:
  269.     move.l pdb_cyclebot(a5),d0
  270.     tst.l d0
  271.     beq.s nocyclebotdraw
  272.     move.l d0,a0
  273.     moveq.l #0,d0
  274.     moveq.l #2,d1
  275.     move.l a2,a1
  276.     move.l a3,d3
  277.     moveq.l #2,d5
  278.     jsr _LVOBltTemplate(a6)
  279. nocyclebotdraw:
  280.     movem.l (sp)+,d0-d5
  281.  
  282.     move.l a2,a1
  283.     move.l d6,d0
  284.     addq.l #4,d0
  285.     move.l d0,a3
  286.     move.l d7,d1
  287.     addq.l #7,d1
  288.     move.l d1,a4
  289.     jsr _LVOMove(a6)
  290.  
  291.     move.l a2,a1
  292.     move.l a3,d0
  293.     move.l a4,d1
  294.     move.l d3,a5
  295.     sub.l #12,a5
  296.     add.l a5,d1
  297.     jsr _LVODraw(a6)
  298.  
  299.     move.l a2,a1
  300.     move.l d6,d0
  301.     addq.l #5,d0
  302.     move.l d0,a3
  303.     move.l a4,d1
  304.     jsr _LVOMove(a6)
  305.  
  306.     move.l a2,a1
  307.     move.l a3,d0
  308.     move.l a4,d1
  309.     add.l a5,d1
  310.     jsr _LVODraw(a6)
  311.  
  312.     move.l a2,a1
  313.     move.l d6,d0
  314.     add.l #18,d0
  315.     move.l d0,a3
  316.     move.l d7,d1
  317.     addq.l #1,d1
  318.     move.l d1,a4
  319.     jsr _LVOMove(a6)
  320.  
  321.     move.l a2,a1
  322.     move.l a3,d0
  323.     move.l d7,d1
  324.     move.l d3,a5
  325.     sub.l #2,a5
  326.     add.l a5,d1
  327.     jsr _LVODraw(a6)
  328.  
  329.     move.l a2,a1
  330.     move.l d4,d0
  331.     jsr _LVOSetAPen(a6)
  332.  
  333.     move.l a2,a1
  334.     move.l d6,d0
  335.     add.l #19,d0
  336.     move.l d0,a3
  337.     move.l a4,d1
  338.     jsr _LVOMove(a6)
  339.  
  340.     move.l a2,a1
  341.     move.l a3,d0
  342.     move.l d7,d1
  343.     add.l a5,d1
  344.     jsr _LVODraw(a6)
  345.  
  346.     move.l a2,a1
  347.     move.l (sp)+,d0
  348.     jsr _LVOSetDrMd(a6)
  349.  
  350.     movem.l (sp)+,a2-a6/d2-d7
  351.     rts
  352.  
  353. DrawCheckMark:
  354.     movem.l a2/a5/a6/d2-d7,-(sp)
  355.     move.l d2,d6
  356.     move.l a6,a5
  357.  
  358.     move.l a0,a2
  359.     move.l a2,a1
  360.     move.l d0,d2
  361.     move.l d1,d3
  362.     moveq.l #13,d4
  363.     moveq.l #7,d5
  364.     move.l db_GfxBase(a6),a6
  365.     move.b 28(a1),-(sp)
  366.     moveq.l #0,d0
  367.     jsr _LVOSetDrMd(a6)
  368.  
  369.     tst.l d6
  370.     bne.s notclear
  371.     move.l a2,a1
  372.     moveq.l #0,d7
  373.     move.b 25(a1),d7
  374.     ext.l d7
  375.     moveq.l #0,d0
  376.     move.b 26(a1),d0
  377.     jsr _LVOSetAPen(a6)
  378.  
  379. notclear:
  380.     move.l pdb_check(a5),a0
  381.     move.l a0,d0
  382.     tst.l d0
  383.     beq nodrawcheck
  384.     moveq.l #0,d0
  385.     moveq.l #2,d1
  386.     move.l a2,a1
  387.     jsr _LVOBltTemplate(a6)
  388. nodrawcheck:
  389.     tst.l d6
  390.     bne.s notclear2
  391.     move.l d7,d0
  392.     move.l a2,a1
  393.     jsr _LVOSetAPen(a6)
  394. notclear2:
  395.     moveq.l #0,d0
  396.     move.b (sp)+,d0
  397.     ext.l d0
  398.     move.l a2,a1
  399.     jsr _LVOSetDrMd(a6)
  400.     movem.l (sp)+,a2/a5/a6/d2-d7
  401.     rts
  402.  
  403. HiliteGad:
  404.     movem.l a2/a3/a6/d2-d4,-(sp)
  405.     moveq.l #0,d4
  406.     move.b 28(a1),d4
  407.     move.l a0,a2
  408.     move.l a1,a3
  409.     moveq.l #2,d0
  410.     move.l db_GfxBase(a6),a6
  411.     jsr _LVOSetDrMd(a6)
  412.     move.l a3,a1
  413.     moveq.l #0,d0
  414.     moveq.l #0,d1
  415.     move.w 4(a2),d0
  416.     move.w 6(a2),d1
  417.     move.l d0,d2
  418.     add.w 8(a2),d2
  419.     subq.w #1,d2
  420.     move.l d1,d3
  421.     add.w 10(a2),d3
  422.     subq.w #1,d3
  423.     jsr _LVORectFill(a6)
  424.     move.l a3,a1
  425.     move.l d4,d0
  426.     jsr _LVOSetDrMd(a6)
  427.     movem.l (sp)+,a2/a3/a6/d2-d4
  428.     rts
  429.  
  430.     end
  431.